package Filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import myUtils.MyUtilss;

public class EncodingCharsetFilter implements Filter{

	//初始化参数对象
	FilterConfig myConf;
	
	@Override
	public void init(FilterConfig conf) throws ServletException {
		// 初始化方法
		//从初始化方法中的conf中可以获取web.xml配置文件中的初始化参数
		//成员变量在filter的init方法中被初始化赋值
		//init方法在doFilter方法之前进行了执行，所以在doFilter方法中直接使用myConf变量
		myConf=conf;
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chai)
			throws IOException, ServletException {
		// 转发过滤处理的业务
		//方法的参数是servlet参数，没有支持HTTP协议（强制转换）
		
		//1.过滤器的主要业务逻辑
		//设置所有的请求对象request，response的编码格式
		
		request.setCharacterEncoding(myConf.getInitParameter("charSet"));
		response.setCharacterEncoding(myConf.getInitParameter("charSet"));
		MyUtilss.logger_rootLogger.debug("设置当前web请求的编码为："+myConf.getInitParameter("charSet"));
		
		//2.将该请求转发给下一个过滤器或者目标servlet
		//（如果没有将请求对象向下转发，则该请求过程会暂停在当前过滤器中）
		
		//chai参数描述的是请求转发处理链对象
		chai.doFilter(request, response);
		
	}


	@Override
	public void destroy() {
		// 销毁方法，回收处理
		
	}
}
